﻿#define _CRT_SECURE_NO_WARNINGS 1

//#include<stdio.h>
//int func(int x)
//{
//	int count = 0;
//	while (x)
//	{
//		count++;
//		x = x & (x - 1);//与运算
//	} 
//	return count;
//}
//int main()
//{
//	int ret = func(-1);
//	printf("%d", ret);
//
//	return 0;
//}










//#include<stdio.h>
//int main()
//{
//	int count = 0;
//	int x = -1;
//	while (x)
//	{
//		count++;
//		x = x >> 1;
//	}
//	printf("%d", count);
//}










//#include<stdio.h>
//int main()
//{
//	int a = 1, b = 2, m = 0, n = 0, k;
//	k = (n = b < a) && (m = a);
//	printf("%d,%d\n", k, m);
//	return 0;
//}











////不用加减乘除做加法
////描述
////写一个函数，求两个整数之和，要求在函数体内不得使用 + 、 - 、 * 、 / 四则运算符号。
////数据范围：两个数都满足 - 10 \le n \le 1000−10≤n≤1000
////进阶：空间复杂度 O(1)O(1)，时间复杂度 O(1)O(1)
////示例1
////输入：1, 2
////返回值：3
////
////示例2
////输入：0, 0
////返回值：0
//
//int Add(int num1, int num2) {
//    // write code here
//    while (num2)
//    {
//        int num = (num1 & num2) << 1;
//        num1 = num1 ^ num2;
//        num2 = num;
//    }
//    return num1;
//}













////找到所有数组中消失的数字
////给你一个含 n 个整数的数组 nums ，其中 nums[i] 在区间[1, n] 内。请你找出所有在[1, n] 范围内但没有出现在 nums 中的数字，并以数组的形式返回结果。
////
////示例 1:
////输入：nums = [4, 3, 2, 7, 8, 2, 3, 1]
////输出：[5, 6]
////
////示例 2：
////输入：nums = [1, 1]
////输出：[2]
//
//int* findDisappearedNumbers(int* nums, int numsSize, int* returnSize) {
//    int* arr = (int*)calloc(numsSize, sizeof(int));
//    *returnSize = 0;
//
//    for (int i = 0; i < numsSize; i++)
//        arr[nums[i] - 1]++;
//    for (int i = 0; i < numsSize; i++)
//    {
//        if (arr[i] == 0)
//            arr[(*returnSize)++] = i + 1;
//    }
//
//    return arr;
//}